home *** CD-ROM | disk | FTP | other *** search
- Path: news.crd.ge.com!rebecca!news
- From: Helin Wei <whl@climate.asrc.albany.edu>
- Newsgroups: comp.lang.c,comp.lang.c++
- Subject: help about the modification from cc to gcc compiler
- Date: Fri, 12 Apr 1996 14:26:03 -0400
- Organization: The University at Albany
- Message-ID: <316EA03B.28EB@climate.asrc.albany.edu>
- NNTP-Posting-Host: csss1.climate.asrc.albany.edu
- Mime-Version: 1.0
- Content-Type: text/plain; charset=gb2312
- Content-Transfer-Encoding: 7bit
- X-Mailer: Mozilla 2.0 (X11; I; SunOS 5.4 sun4c)
- CC: whl@climate.asrc.albany.edu
-
- Hi,
-
- Because my Sun Sparc 20 system has been changed to Solaris 2.4 from
- Openwindow,I met a problem when I try to use gcc to compile one
- program which can be compiled well by cc compiler,anyone can tell me
- what I should modify the program,thanks in advance.Following is the
- error message and the code:
-
- signal.c: In function `setsig_':
- signal.c:17: storage size of `sigsegv' isn't known
- signal.c:17: storage size of `sigbus' isn't known
- *** Error code 1
- The following command caused the error:
- gcc -g -Dsun -c -o signal.o signal.c
-
-
-
- /*--------------------------------------------------------------------*/
-
- #ifdef sun
-
- #include <signal.h>
- #include <stdio.h>
- #define SUN
-
- void stopgf_();
-
- void setsig_()
- { /* set up to catch a few signals */
-
- #include <floatingpoint.h>
- void sgsegv(), sgbuserr();
- void sginexact(), sg0div(), sgunder(), sgover(), sginvalid();
- struct sigvec sigsegv, sigbus;
- extern int sigvec(), ieee_handler();
-
- sigsegv.sv_handler = sgsegv;
- sigbus.sv_handler = sgbuserr;
- (void) sigvec(SIGSEGV, &sigsegv, NULL);
- (void) sigvec(SIGBUS, &sigbus, NULL);
- /*ieee_handler("set", "inexact", sginexact);*/
- ieee_handler("set", "division", sg0div);
- ieee_handler("set", "underflow", sgunder);
- ieee_handler("set", "overflow", sgover);
- ieee_handler("set", "invalid", sginvalid);
-
- return;
- }
-
-
- /* Signal handlers follow */
-
- void sgsegv()
- {
- printf("Segmentation violation");
- stopgf_();
- }
-
-
- void sgbuserr()
- {
- printf("Bus error");
- stopgf_();
- }
-
-
- void sginexact()
- {
- printf("Inexact FPE error");
- stopgf_();
- }
-
-
- void sg0div()
- {
- printf("Division by zero FPE error");
- stopgf_();
- }
-
-
- void sgunder()
- {
- printf("Underflow FPE error");
- stopgf_();
- }
- void stopgf_()
- {
- printf("\nstopgf_() called\n");
- abort();
- }
-
- #endif
-
- /*--------------------------------------------------------------------*/
-
- #ifdef sgi
-
- void setsig_()
- {
- }
-
- #endif
-
- /*--------------------------------------------------------------------*/
-
- #ifdef cray
-
- void SETSIG()
- {
- }
-
- #endif
-
- /*--------------------------------------------------------------------*/
- ~
-